﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Drzewo_new
{
    public class Element<K, D> //where K : IComparable // klasa element przechowująca klucz i dane
    {
        private K klucz;
        private D dane;

        public Element(K k, D d)
        {
            klucz = k;
            dane = d;
        }

        public K zwrocKlucz() { return klucz; }
    }

    public class Drzewo<K, D>
    {
        private Element<K, D>[] tablica; // wartosci (klucze) drzewa
        private int rozmiar;
        private int pojemnosc;
        public int zwroc_rozmiar() { return rozmiar; }
        public Drzewo()
        {
            Inicjalizacja();
        }
        public Drzewo(int i)
        {
            Inicjalizacja(i);
        }
        public void Inicjalizacja()
        {
            tablica = new Element<K, D>[1001];
            pojemnosc = 1000;
            rozmiar = 0;
        }

        public void Inicjalizacja(int i)
        {
            tablica = new Element<K, D>[i + 1];
            pojemnosc = i;
            rozmiar = 0;
        }

        private void zamien(int indeks1, int indeks2) // zamiana miesjcami elementow
        {
            Element<K, D> temp = tablica[indeks1];
            tablica[indeks1] = tablica[indeks2];
            tablica[indeks2] = temp;
        }

        public void wstaw(K klucz, D dane)
        {
            rozmiar++;
            Element<K, D> nowy = new Element<K, D>(klucz, dane);

            if (rozmiar == pojemnosc)
            {
                Element<K, D>[] tmp = new Element<K, D>[2 * pojemnosc];
                for (int i = 0; i < rozmiar; i++)
                    tmp[i] = tablica[i];
                tablica = tmp;
                pojemnosc = 2;
            }
            tablica[rozmiar] = nowy;
            PrzesunWGore();
        }

        private void PrzesunWGore()
        {

        }
    }


}
